package high.concurrent.service;

import high.concurrent.dto.NewUserDTO;
import high.concurrent.enums.CouponCategoryEnum;
import high.concurrent.utils.JsonData;

public interface CouponService {

    /**
     * 查询所有已发布并且促销的优惠券
     * @param page  当前页
     * @param size  每页条数
     * @return
     */
    JsonData selectPublicsPromotionCouponList(Integer page, Integer size);

    /**
     * 领取优惠券
     * @param couponId  优惠券id
     * @param couponCategoryEnum  领券类型限制
     * @return
     */
    JsonData receiveCoupon(Long couponId, CouponCategoryEnum couponCategoryEnum);

    /**
     * 新用户注册发放优惠券
     * 1. 查询新人注册可以发放的所有优惠券
     * 2. 构造ThreadLocal
     * 3. 循环查询的优惠券，逐个添加
     * @param newUserDTO  用户信息
     * @param newUser  优惠券类型
     * @return
     */
    JsonData RPCNewCouponRecord(NewUserDTO newUserDTO, CouponCategoryEnum newUser);
}
